4720. Новая игра Серёжи

 

Троечник Серёжа часто просит отличника Васю сделать ему домашнее задание. Так как при всей гениальности Васи он всё же не может справиться с работой мгновенно, то Серёже приходится ждать. Серёже скучно ждать долго без дела. Не так давно он придумал новую игру, чтобы скоротать время.

На белый стол с привязанной к нему системой координат Серёжа кладёт прямоугольный лист чёрной бумаги. Сверху на него кладёт прямоугольный лист белой бумаги, так что тот возможно перекрывает часть чёрного листа. Стороны обеих листов бумаги параллельны осям координат. После этого мальчик выбирает точку на плоскости стола. Если она попадает на чёрный лист, Серёжа считает, что ожидание проходит не скучно, иначе он расстраивается.

Помогите Серёже понять, расстроится он или нет.

 

Вход. Сначала вводятся координаты левого верхнего угла чёрного прямоугольника, затем правого нижнего, затем координаты углов белого прямоугольника в том же формате и в конце – координаты точки. Все координаты – целые числа, по модулю не превышающие 10000.

 

Выход. Программа должна выводить слово "SAD", если Серёжа расстроится (когда точка попадает на границу Серёжа считает её принадлежащей чёрному листу, потому что не любит расс), и "HAPPY" – в обратном случае.

 

Пример входа 1

Пример выхода 1

2 10 5 3 4 4 6 1 2 9

HAPPY

 

 

Пример входа 2

Пример выхода 2

2 10 5 3 4 4 6 1 6 3

SAD

 

 

РЕШЕНИЕ

условный оператор

 

Анализ алгоритма

Пусть (x1, y1) и (x2, y2) – координаты противоположных углов черного прямоугольника, а (x3, y3) и (x4, y4) – координаты противоположных углов белого прямоугольника. Пусть (x0, y0) – координаты точки, которую Сережа выбирает на столе.

Белый лист бумаги кладется поверх черного. Например, возможны следующие варианты:

Сначала проверим, принадлежит ли точка (x0, y0) белому прямоугольнику. Затем проверим, принадлежит ли точка (x0, y0) черному прямоугольнику. Если точка не принадлежит ни одному из прямоугольников, то мальчик расстроен.

Точка (x0, y0) лежит внутри прямоугольника (x1, y1) – (x2, y2), если выполняются следующие неравенства:

x1 < x0 < x2 и y2 < y0 < y1

 

Реализация алгоритма

Читаем координаты чёрного прямоугольника, затем координаты белого прямоугольника и координаты точки (x0, y0).

 

scanf("%d %d %d %d",&x1,&y1,&x2,&y2);

scanf("%d %d %d %d",&x3,&y3,&x4,&y4);

scanf("%d %d",&x0,&y0);

 

Если точка (x0, y0) принадлежит белому прямоугольнику, то Сережа грустит.

 

if ((x3 < x0)  && (x0 < x4)  && (y4 < y0)  && (y0 < y3))

  printf("SAD\n");

 

Если точка (x0, y0) принадлежит черному (но при этом не принадлежит белому) прямоугольнику включая его границы, то Сережа радостен.

 

else if ((x1 <= x0) && (x0 <= x2) && (y2 <= y0) && (y0 <= y1))

  printf("HAPPY\n");

 

Иначе точка лежит вне прямоугольников, и мальчик от этого расстроен.

 

else printf("SAD\n");